#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：图灵学习 
@File    ：1.声明生成器函数.py
@IDE     ：PyCharm 
@Author  ：ChenLiGao
@Date    ：2024-10-25 10:56
'''


def get_num(number):
    index = 0
    while index < number:
        print("迭代中...")
        yield index
        print("迭代结束")
        index += 1

# 生成器函数不能直接使用小括号调用方式获取结果
# 生成器函数调用后返回的是一个生成器对象[和迭代器类似]
obj = get_num(5)
print(obj.__next__())
print(obj.__next__())
print(obj.__next__())

"""
    1.生成器函数第一次遇到yield将结果返回出去，并保存当前运行的状态[保存了代码运行的位置]
    2.第二次运行则根据上一次运行的位置继续向下运行
    
注意：
    可以使用yield关键字声明一个函数是生成器函数
    生成器函数调用后返回得是一个生成器对象，可以利用生成器对象中得next获取结果
"""

